// 转换函数抛出的异常

/**
 * @param target 类的原型
 * @param propertyName 字符串方法名
 * @param descriptor 属性描述其 descriptor.value就是方法
 * */
function transformException(target, propertyName, descriptor) {
    const originalMethod = descriptor.value;
    descriptor.value = function (...args) {
        try {
            return originalMethod.apply(this, args);
        } catch (err) {
            throw new Error("transform exception")
        }
    }
    return descriptor;
}

class Example {
    @transformException
    riskMethod() {
        throw new Error("original exception")
    }
}

const example = new Example();
try {
    example.riskMethod();
} catch (err) {
    console.log(err.message)
}
